برنامه جمع دو عدد خیلی بزرگ با vector
 
آموزش ++C
آموزش و سورس های برنامه نویسی به زبان ++C
 
 
شنبه 9 ارديبهشت 1391برچسب:, :: 21:15 ::  نويسنده : کیوان مجنونی

 برای جمع اعدادی که در محدوده ی قابل ذخیره در مبنا 32 اعداد int نباشند، باید به صورت نرم افزاری عمل کرد. در زیر برنامه ای ارائه شده که با استفاده از وکتور های یک بعدی دو عدد بسیار بزرگ (Huge Integer) را با یکدیگر جمع میکند.

 

 

//This program gets the sum of two huge integer numbers.
#include
#include
#include

int main()
{
    vector num1,num2,result;
    cout<<"Enter tow huge integer numbers to get the sum of them.\n";
     cout<<"Enter number one and press enter key.\n\n";
     char ch;
     while((ch=getch())!=13)
      {
          if(ch>='0'&& ch<='9')
            {
                cout.put(ch);
                ch-=48;
                num1.push_back(ch);
            }
      }
     cout<<"\n+"<      while((ch=getch())!=13)
      {
          if(ch>='0'&& ch<='9')
            {
                cout.put(ch);
                ch-=48;
                num2.push_back(ch);
            }
      }
    cout<<"\n="<     int min_size;
    min_size = num1.size() < num2.size() ?
               num1.size() : num2.size();
    bool carry=0;
    while(min_size>0)
     {
       if(num1.back()+num2.back()+carry<10)
        {
         result.push_back(num1.back()+num2.back()+carry);
         num1.pop_back();
         num2.pop_back();
         carry=0;
        }
       else
        {
    result.push_back((num1.back()+num2.back()+carry)%10);
         num1.pop_back();
         num2.pop_back();
         carry=1;
        }
      min_size--;
     }
   while(num1.size()!=0)
    {
      if(num1.back()+carry<10)
       {
           result.push_back(num1.back()+carry);
           num1.pop_back();
           carry=0;
        }
      else
        {
           result.push_back((num1.back()+carry)%10);
           num1.pop_back();
           carry=1;
        } 
    }
  while(num2.size()!=0)
    {
      if(num2.back()+carry<10)
        {
           result.push_back(num2.back()+carry);
           num2.pop_back();
           carry=0;
        }
      else
        {
           result.push_back((num2.back()+carry)%10);
           num2.pop_back();
           carry=1;
        }  
     }
   if(carry==1)
      result.push_back(1);
   while(result.size()>0)
    {
        cout.put(result.back()+48);
        result.pop_back();
    }
   cout<   return 0;
}


//end

 


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:







درباره وبلاگ


به وبلاگ من خوش آمدید
آخرین مطالب
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان آموزش C++ و آدرس amoozesh-cpp.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.





نويسندگان


ورود اعضا:


نام :
وب :
پیام :
2+2=:
(Refresh)

<-PollName->

<-PollItems->

خبرنامه وب سایت:





آمار وب سایت:
 

بازدید امروز : 18
بازدید دیروز : 0
بازدید هفته : 19
بازدید ماه : 262
بازدید کل : 75196
تعداد مطالب : 50
تعداد نظرات : 7
تعداد آنلاین : 1